package upload;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

/**
 * @author DCSGO
 * @version 1.0
 * 1.编写一个服务端,和一个客户端
 * 2.服务器端在9999端口监听
 * 3.客户端连接到服务端，发送一张图片shoes.jpg
 * 4.服务器端接收到客户端发送的图片，保存到 src/upload 下,发送“收到图片”再退出
 * 5.客户端接收到服务端发送的“收到图片"，再退出
 * 6.该程序要求使用 StreamUtils.java
 */
public class TCPFileUploadClient {
    public static void main(String[] args) throws Exception {
        String srcFilePath = "C:\\Users\\Administrator\\Pictures\\shoes.jpg";
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFilePath));
        byte[] bytes = StreamUtils.streamToByteArray(bis);//读取到的图片资源
        System.out.println("待上传文件准备完毕！");
        int port = 9999;
        Socket socket = new Socket(InetAddress.getLocalHost(), port);
        System.out.println("已与服务端建立连接！");

        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        bos.write(bytes);
        bos.flush();
        socket.shutdownOutput();
        System.out.println("文件已上传！");

        String s = StreamUtils.streamToString(socket.getInputStream());
        System.out.println("已接收到服务端的回传信息：" + s);

        bos.close();
        bis.close();
        socket.close();

        System.out.println("文件上传完毕！");
    }
    /*
     * 待上传文件准备完毕！
     * 已与服务端建立连接！
     * 文件已上传！
     * 已接收到服务端的回传信息：收到图片
     *
     * 文件上传完毕！
     *
     * 进程已结束，退出代码为 0
     */
}
